package cn.lili.modules.service;

import cn.lili.common.vo.PageVO;
import cn.lili.modules.urbansubstation.entity.dos.UrbanSubstation;
import cn.lili.modules.urbansubstation.entity.dto.UrbanSubstationDTO;
import cn.lili.modules.urbansubstation.entity.dto.UrbanSubstationEditDTO;
import cn.lili.modules.urbansubstation.entity.dto.UrbanSubstationSearchPageParams;
import cn.lili.modules.urbansubstation.entity.dto.UrbanSubstationSearchParams;
import cn.lili.modules.urbansubstation.entity.vos.UrbanSubstationVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface UrbanSubstationService extends IService<UrbanSubstation> {
    /**
     * 根据用户ID获取城市分站信息
     * @param userId
     * @return
     */
    UrbanSubstation getUrbanSubstation(String userId);

    /**
     * 编辑城市分站
     * 用于后台编辑
     *
     * @param urbanSubstationEditDTO 后台编辑城市分站信息
     * @return 城市分站
     */
    UrbanSubstation edit(UrbanSubstationEditDTO urbanSubstationEditDTO);

    /**
     * 增加城市分站
     * 用于后台添加
     *
     * @param urbanSubstationDTO 后台添加城市分站信息
     * @return 城市分站
     */
    UrbanSubstation add(UrbanSubstationDTO urbanSubstationDTO);

    /**
     * 分页条件查询
     * 用于展示城市分站列表
     *
     * @return 城市分站列表
     */
    Page<UrbanSubstationVo> findByConditionPage(UrbanSubstationSearchParams urbanSubstationSearchParams, PageVO page);

    /**
     * 根据ID获取城市分站信息
     * @param id
     * @return
     */
    UrbanSubstation getUrbanSubstationById(String id);

    /**
     * 根据城市ID获取城市站点信息
     * @param areaId 城市ID
     * @return
     */
    UrbanSubstation getByAddressId (String areaId);

    /**
     * 关闭城市分站
     * @param id 城市分站ID
     */
    void disable(String id);

    /**
     * 开启城市分站
     * @param id 城市分站ID
     */
    void enable(String id, String status);

    /**
     * 删除城市分站
     * @param id
     */
    void delete(String id);

    /**
     * 获取城市分站信息
     * @param id 城市分站ID
     */
    UrbanSubstation getById(String id);

    List<UrbanSubstation> select(String name);

    /**
     * 根据城市id集合获取城市分站
     * @param searchPageParams
     * @return
     */
    Page<UrbanSubstation> getPageByRegionIds(UrbanSubstationSearchPageParams searchPageParams);

    /**
     * 获取运营中心账号下的城市分站下拉框
     * @return
     */
    List<UrbanSubstation> getOperationCenterUrbanSubstationList();
}
